Các cải tiến hiệu năng biên dịch của ngôn ngữ cốt lõi C++11

Tiêu bản ngoài

Tiểu bản ngoài (tiếng Anh: extern template) là cú pháp mới được C++11 cung cấp nhằm rút ngắn thời gian biên dịch.Trong phiên bản C++03, chương trình biên dịch phải khởi tạo một tiêu bản (template) mỗi khi gặp tiêu bản đó khi dịch một đoạn mã lệnh nào đó. Nếu chỉ một tiêu bản của cùng một kiểu dữ liệu của các đoạn mã lệnh cần dịch được khởi tạo một lần thì việc biên dịch sẽ trở nên nhanh hơn rất nhiều. Hiện tại chúng ta không có cách nào làm được việc này trong C++03. Chính vì vậy C++11 đã giới thiệu cú pháp mới: tiêu bản ngoài (extern template) nhằm hỗ trợ cho việc định nghĩa tiêu bản ngoài. Ví dụ:

Trong C++03, cú pháp sau dùng để yêu cầu trình biên dịch khởi tạo một tiêu bản:

template class std::vector<MyClass>;

Hiện tại C++11 cung cấp cú pháp sau để yêu cầu trình biên dịch không khởi tạo tiêu bản khi dịch đoạn mã này:

extern template class std::vector<MyClass>;